/*
 * Descripción: En esta clase es donde se realiza la lectura de datos desde el
 * archivo de texto Datos.txt
 * 
 * @autor: Karla Cristina Obando Narváez Fecha: 05 de Marzo de 2012 Programa #1
 */
package pkgLeerDatos;

/** Esta clase pertenece a este paquete **/

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import pkgListaLigada.ClsLista;
import pkgPrincipal.ClsPrincipal;

/**
 * Importa esta clase para realizar los cálculos sobre los datos ingresados
 **/

/**
 * 
 * @author Karla O
 */
class ClsLeerDatos {
  public static void main(String[] arg) throws IOException {
    File archivo = null;
    FileReader fr = null;
    BufferedReader br = null;

    /*Apertura del fichero y creacion de BufferedReader para poder
     hacer una lectura comoda (disponer del metodo readLine()).*/
    archivo = new File("D:\\archivo.csv");
    fr = new FileReader(archivo);
    br = new BufferedReader(fr);
    // Lectura del fichero
    String slineaLeida;
    ArrayList<ClsLista> conjuntos = new ArrayList<ClsLista>();
    boolean firstLine = true;
    while ((slineaLeida = br.readLine()) != null) {
      if (slineaLeida.isEmpty()) {
        continue;
      }

      if (firstLine) {
        String[] encabezados = slineaLeida.split(";");

        for (String encabezado : encabezados) {
          conjuntos.add(new ClsLista(encabezado));
        }
        firstLine = false;
        continue;
      }
      String[] nums = slineaLeida.split(";");
      int i = 0;
      for (String n : nums) {
        Double ddatoLeido = null;
        try {
          ddatoLeido = Double.parseDouble(n);
        } catch (NumberFormatException e) {
          // saddff
        }
        if (ddatoLeido != null) {
          conjuntos.get(i).insertarAlFinal(ddatoLeido);
        }
        i++;
      }
    }

    for (ClsLista lista : conjuntos) {
    double ddesviacion = ClsPrincipal.dCalcularDesviacion(lista);
    double dmedia = ClsPrincipal.dCalcularMedia(lista);
    JOptionPane.showMessageDialog(new JFrame(), " El valor de la Media es : " + dmedia
          + "\n El valor de la Desviación estándar es: " + ddesviacion, lista.getNombre(), JOptionPane.OK_OPTION);
    /** Para cerrar la lectura del archivo .txt **/
    fr.close();
    }
  }
}